/**
 * 
 */
package org.ztest.timer;

import java.util.concurrent.DelayQueue;

/**
 * 使用 {@link java.util.concurrent.DelayQueue} 实现的定时器，适合因人而异的定时行为
 * @author lhl
 *
 * 2015年7月23日上午9:04:05
 */
public class DelayedTimer implements Runnable
{
	// 定时器队列
	private DelayQueue<DelayItem> timerQueue = new DelayQueue<DelayItem>();
	
	/**
	 * 添加一个定时器
	 * @param item
	 */
	public void schedule(DelayItem item)
	{
		timerQueue.offer(item);
	}
	
	/**
	 * 取消一个定时器
	 * @param item
	 */
	public void unschedule(DelayItem item)
	{
		timerQueue.remove(item);
	}
	
	@Override
	public void run()
	{
		try
		{
			timerQueue.take().run();
		}
		catch (Throwable t)
		{
			t.printStackTrace();
		}
	}
}
